package com.行为型模型.V备忘录模式.writeBox;

/**
 * 备忘录角色对任何对象都提供一个接口，即宽接口，备忘录角色的内部所存储的状态就对所有对象公 开。类图如下：
 *
 * 分析：白箱备忘录模式是破坏封装性的。但是通过程序员自律，同样可以在一定程度上实现模式 的大部分用意
 */
public class Test {
    public static void main(String[] args) {
        System.out.println("------------------大战boss前------------------");
        GameRole gameRole=new GameRole();
        gameRole.initState();
        gameRole.stateDisplay();
        //保存进度
        RoleStateManager roleStateManager=new RoleStateManager();
        roleStateManager.setRoleStateMemento(gameRole.saveState());


        System.out.println("------------------大战boss后------------------");
        gameRole.fight();
        gameRole.stateDisplay();


        System.out.println("------------------恢复之前状态------------------");
        gameRole.recoverState(roleStateManager.getRoleStateMemento());
        gameRole.stateDisplay();

        //白盒模式 我们可以在管理着访问 备忘录内容
        //gameRole.saveState().setAtk(1000);

    }
}
